home *** CD-ROM | disk | FTP | other *** search
/ LOGIC Apps / Logic-APPLE_II_APPS.iso / pc / LOGIC Apple II 5.25" Library - DOS Part 3 / DOS078A.dsk / APPLESOFT LINE WRITER.bas < prev    next >
BASIC Source File  |  2012-02-16  |  13KB  |  243 lines

  1. 1  GOSUB 60000 REM                                                                             
  2. 10  REM **********************      *   APPLESOFT LINE   *      *       WRITTER      *      *  OCTOBER 31,1980   *      *                    *
  3. 12  REM *     WRITTEN BY     *      *  JAMES E PFEIFFER  *      *   (312) 289-7311   *      *                    *
  4. 14  REM * PROG. WAS WRITTEN  *      * ON AN APPLE II 48K *      * WITH DOS 3.2 AND   *      * APPLESOFT ROM CARD *      *                    *
  5. 15  REM * PRINTER / OPTIONAL *      * SEE LINES 30000 TO *      * 30030 FOR PRINTER  *      * COMANDS.           *      *                    *
  6. 16  REM **********************
  7. 101 HA = 64795: DIM AN(14)
  8. 102  PRINT "THIS PROGRAM IS AN AID TO PROGRAMMING.": PRINT 
  9. 105  PRINT "IT'S PURPOSE IS TO SAVE TIME IN SETTING": PRINT 
  10. 110  PRINT "UP MOST DOS COMMAND STRINGS,": PRINT 
  11. 115  PRINT "ASSIGNING VARIABLES TO FREQUENTLY USED": PRINT 
  12. 120  PRINT "LOCATIONS IN MEMORY AND ALSO 'DEF FN'": PRINT 
  13. 125  PRINT "FOR APPLESOFT POINTERS.": PRINT 
  14. 130  PRINT "THE PROGRAM WILL WRITE PROGRAM LINE": PRINT 
  15. 135  PRINT "NUMBERS BETWEEN 60000 & 60499 AND #1": PRINT 
  16. 150  PRINT : PRINT : POKE RS,0: INPUT "DO YOU NEED INSTRUCTIONS ? Y/N ";A1$: IF A1$ = "N"  THEN 5000
  17. 175  REM   *****************           INSTRUCTIONS FOR                  USE                   *****************
  18. 180  HOME 
  19. 185  PRINT "THIS PROGRAM SHOULD BE USED BEFORE YOU": PRINT 
  20. 190  PRINT "BEGIN YOUR PROGRAM.": PRINT 
  21. 195  PRINT "LATER WILL BE SHOWN A SELECTION MENU": PRINT 
  22. 200  PRINT "FROM WHICH YOU MAY SELECT OR DE-SELECT": PRINT 
  23. 205  PRINT "THE GROUPS OF ROUTINES (LINE #'S) YOU": PRINT 
  24. 210  PRINT "WOULD LIKE IN YOUR PROGRAM.": PRINT 
  25. 215  PRINT "WHEN DONE SELECTING ENTER 'L'.": PRINT 
  26. 220  PRINT "YOU WILL BE ASKED ONE MORE QUESTION": PRINT 
  27. 225  PRINT "AND THEN THE PROGRAM WILL CONSTRUCT THE": PRINT 
  28. 230  PRINT "ROUTINES YOU HAVE ASKED FOR AND RETURN": PRINT 
  29. 235  PRINT "YOU TO APPLESOFT.": PRINT 
  30. 240  POKE RS,0: PRINT "          - HIT ANY KEY-": CALL HA
  31. 250  HOME 
  32. 255  PRINT "LINE NUMBERS WILL REPRESENT AS FOLLOWS.": PRINT 
  33. 260  PRINT "LINE  60100       TEXT:HOME COMMANDS."
  34. 265  PRINT "LINES 60101-60113 DOS COMMAND STRINGS."
  35. 270  PRINT "LINES 60199-60204 WINDOW PARAMETER                        LOCATIONS."
  36. 275  PRINT "LINES 60249-60252 CLEAR SCREEN CALL                       LOCATIONS."
  37. 280  PRINT "LINES 60270-60277 READ & SET KEYBOARD                     LOCATIONS."
  38. 285  PRINT "LINES 60299-60302 CURSOR POSITION LOC."
  39. 290  PRINT "LINES 60320-60329 SCREEN SELECT LOC."
  40. 295  PRINT "LINES 60350-60356 SPEAKER & PADDLE                        LOCATIONS."
  41. 300  PRINT "LINES 60380-60390 ERROR HANDLING ROUTINE                  (CALL 768)"
  42. 305  PRINT "LINES 60385-60390 ERROR HANDLING ROUTINE                  (CALL 945)"
  43. 310  PRINT "LINES 60400-60405 APPLESOFT POINTER                       FUNCTIONS. (DEF FN)"
  44. 320  PRINT : POKE RS,0: PRINT "          -HIT ANY KEY-": CALL HA
  45. 325  HOME 
  46. 330  PRINT "IF YOU WOULD LIKE TO SEE A PRINTED LIST": PRINT 
  47. 335  PRINT "OF THE ASSIGNMENTS IN LINES 60000-60499": PRINT 
  48. 337  POKE RS,0
  49. 340  PRINT : PRINT "TYPE 'P' TO PRINT TO PRINTER-": PRINT 
  50. 345  PRINT "            OR": PRINT 
  51. 350  PRINT "TYPE 'S' TO PRINT TO SCREEN-"
  52. 360  PRINT : PRINT "            OR": PRINT 
  53. 365  PRINT "HIT ANY OTHER KEY TO CONTINUE                  INSTRUCTIONS."
  54. 370  CALL HA:SE =  PEEK(RK): IF SE = 80  THEN 30000: REM  GO PRINT
  55. 375  IF SE = 83  THEN 10000: REM  SCREEN PRINT
  56. 380  PRINT D$;"NOMONI,C,O": HOME 
  57. 385  PRINT "AS PREVEOUSLY MENTIONED THIS PROGRAM": PRINT 
  58. 390  PRINT "SHOULD BE RUN BEFORE YOU BEGIN YOUR": PRINT 
  59. 400  PRINT "PROGRAM, HOWEVER AN OPTION ALLOWS YOU": PRINT 
  60. 405  PRINT "TO CREATE TEXT FILES ON DISK WHICH YOU": PRINT 
  61. 410  PRINT "CAN 'EXEC' INTO A PREVEOUSLY WRITTEN": PRINT 
  62. 415  PRINT "PROGRAM. IF YOU WOULD LIKE TO CREATE": PRINT 
  63. 420  PRINT "THOSE TEXT FILES (12 OF THEM) NOW TYPE": PRINT 
  64. 425  PRINT "'E' OR TYPE ANY OTHER KEY TO PROCEED": PRINT 
  65. 430  PRINT "WITH WORKING PART OF THIS PROGRAM."
  66. 450  POKE RS,0: CALL HA:SE =  PEEK(RK): IF SE = 69  THEN 20000: REM   CREATE TEXT FILES  
  67. 5000  REM   *****************           *   SELECTION   *           *     MENU      *           *****************
  68. 5001  PRINT D$;"NOMONI,C,O"
  69. 5005  HOME 
  70. 5010  PRINT "A -";FI$(1)
  71. 5015  PRINT "B -";FI$(2)
  72. 5020  PRINT "C -";FI$(3)
  73. 5025  PRINT "D -";FI$(4)
  74. 5030  PRINT "E -";FI$(5)
  75. 5035  PRINT "F -";FI$(6)
  76. 5040  PRINT "G -";FI$(7)
  77. 5045  PRINT "H -";FI$(8)
  78. 5050  PRINT "I -";FI$(9)
  79. 5055  PRINT "J -";FI$(10)
  80. 5060  PRINT "K -";FI$(11)
  81. 5065  PRINT "L -DONE SELECTING."
  82. 5070  PRINT "M -ABORT PROGRAM"
  83. 5100  VTAB 22: CALL CE: PRINT "SELECT OR DE-SELECT BY LETTER ? ";: GET AN$
  84. 5102  PRINT : IF AN$ =  CHR$(3)  THEN  END 
  85. 5103  IF AN$ = "M"  THEN  END 
  86. 5105 AN =  ASC(AN$) -64: IF AN <1  OR AN >12  THEN 5100
  87. 5110  ON AN GOTO 5200,5200,5200,5200,5200,5200,5200,5200,5200,5200,5200,5500
  88. 5200 AN(AN) =   NOT AN(AN)
  89. 5210  PRINT : VTAB AN: IF AN(AN) >0  THEN  INVERSE 
  90. 5215  PRINT AN$: NORMAL 
  91. 5220  GOTO 5100
  92. 5500  REM   ***************             * DONE SELECT.*             *  NOW CREATE *             * AND EXECUTE *             * TEMP. FILE  *             ***************
  93. 5505  PRINT : POKE RS,0: INPUT "DO YOU WANT 'REM' STATEMENTS ? Y/N ";AN$
  94. 5506  HOME : VTAB 8: PRINT "A DISK TO CREATE A TEMPORY TEXT FILE": PRINT : PRINT "IS NEEDED.  MAKE SURE THAT THERE IS A": PRINT : PRINT "DISK IN THE DRIVE AND THAT IT HAS SOME": PRINT : PRINT "SPACE AVAILABLE..": POKE RS,0: PRINT : INPUT "THEN HIT <RETURN> ";A9$
  95. 5510  PRINT O$;"TEMP EXEC": PRINT W$;"TEMP EXEC"
  96. 5520  PRINT "NEW"
  97. 5523  PRINT "MONI,C,O"
  98. 5525  PRINT "1 GOSUB 60000"
  99. 5526  PRINT "60000 REM SET UP ROUTINE": PRINT "60499RETURN"
  100. 5528  POKE 33,30
  101. 5530  FOR X1 = 1 TO 11: IF AN(X1) = 0  THEN 5600
  102. 5535  ON X1 GOSUB 6100,6200,6300,6400,6500,6600,6700,6800,6900,7000,7100
  103. 5600  NEXT 
  104. 5610  IF AN$ < >"N"  THEN 5700
  105. 5611  GOSUB 7200
  106. 5700  PRINT "NOMONI,C,O"
  107. 5701  PRINT "DELETE TEMP EXEC"
  108. 5705  PRINT C$;"TEMP EXEC"
  109. 5707  TEXT 
  110. 5710  PRINT D$;"EXEC TEMP EXEC"
  111. 5720  END 
  112. 6100  LIST 60100: RETURN 
  113. 6200  LIST 60101,60113: RETURN 
  114. 6300  LIST 60199,60204: RETURN 
  115. 6400  LIST 60249,60252: RETURN 
  116. 6500  LIST 60270,60277: RETURN 
  117. 6600  LIST 60299,60302: RETURN 
  118. 6700  LIST 60320,60329: RETURN 
  119. 6800  LIST 60350,60356: RETURN 
  120. 6900  LIST 60380,60382: LIST 60390: RETURN 
  121. 7000  LIST 60385,60390: RETURN 
  122. 7100  LIST 60400,60405: RETURN 
  123. 7200  PRINT "DEL60200,60204": PRINT "DEL60250,60252": PRINT "DEL60274,60277": PRINT "DEL60300,60302": PRINT "DEL60321,60329"
  124. 7205  PRINT "DEL60351,60356": PRINT "60382": PRINT "60387"
  125. 7210  RETURN 
  126. 10000  REM   ***************             *    PRINT    *             * ASSIGNMENTS *             *  TO SCREEN  *             ***************
  127. 10010  FOR X1 = 1 TO 11: HOME : PRINT FI$(X1)
  128. 10020  ON X1 GOSUB 6100,6200,6300,6400,6500,6600,6700,6800,6900,7000,7100
  129. 10025  PRINT "'ESC'=RET. TO INST. / ANY KEY=NEXT PAGE"
  130. 10030  POKE RS,0: CALL HA:SE =  PEEK(RK): IF SE = 27  THEN X1 = 11
  131. 10050  NEXT 
  132. 10055  GOTO 325
  133. 20000  REM   ***************             * CREATE TEXT *             *  FILES FOR  *             *  MANUAL USE *             ***************
  134. 20010  PRINT D$"MONI,C,O"
  135. 20012  HOME 
  136. 20015  POKE 33,30
  137. 20018  ONERR  GOTO 20080
  138. 20020  FOR X1 = 1 TO 11
  139. 20030  PRINT O$;FI$(X1): PRINT W$;FI$(X1)
  140. 20040  ON X1 GOSUB 6100,6200,6300,6400,6500,6600,6700,6800,6900,7000,7100
  141. 20042  PRINT C$;FI$(X1): PRINT L$;FI$(X1)
  142. 20045  NEXT 
  143. 20050  PRINT O$;"DELETE REM": PRINT W$;"DELETE REM"
  144. 20055  GOSUB 7200
  145. 20060  PRINT C$;"DELETE REM": PRINT L$;"DELETE REM"
  146. 20065  PRINT D$"NOMONI,C,O"
  147. 20070  TEXT : GOTO 5000
  148. 20075  REM  ******************          *   DISK ERROR   *          * HANDLE ROUTINE *          ******************
  149. 20080 ER =  PEEK(222): POKE 216,0: CALL 768
  150. 20081  IF X1 >11  THEN X1 = 11
  151. 20083 XS = X1
  152. 20084  TEXT : HOME 
  153. 20085  PRINT C$;FI$(X1): FOR X1 = 1 TO 2: NEXT 
  154. 20090  IF ER = 10  THEN  PRINT "FILES ALREADY SEEM TO BE ON THIS DISK.": PRINT : POKE RS,0: INPUT "HIT <RETURN> ";A7$: GOTO 5000
  155. 20095  IF ER = 4  THEN  PRINT "DISK IS WRITE PROTECTED.": PRINT : POKE RS,0: INPUT "CHANGE DISK & TRY AGAIN ? Y/N ";A7$: IF A7$ = "Y"  THEN 20000
  156. 20096  IF ER = 4  THEN 380
  157. 20100  IF ER = 9  THEN  PRINT : PRINT "DISK IS FULL": PRINT : PRINT "NOW DELETEING FILES NOT COMPLETE.": PRINT : PRINT 
  158. 20104  ONERR  GOTO 20111
  159. 20105  IF ER = 9  THEN  FOR X1 = 1 TO XS: PRINT U$;FI$(X1): PRINT DE$;FI$(X1): NEXT : PRINT O$;"DELETE REM": PRINT DE$;"DELETE REM"
  160. 20106  POKE 216,0: IF  PEEK(222) = 6  OR ER = 9  THEN  PRINT : PRINT : POKE RS,0: INPUT "CHANGE DISK & TRY AGAIN ? Y/N ";A7$: IF A7$ = "Y"  THEN 20000
  161. 20107  IF ER = 9  THEN 380
  162. 20108  IF ER = 8  THEN  PRINT D$;"NOMONI,C,O": PRINT : PRINT "I/O ERROR": END 
  163. 20110  PRINT "UNUSAL DISK ERROR-IF ENDED HERE-PANIC": END 
  164. 20111  POKE 216,0: CALL 768: GOTO 20106
  165. 30000  REM   ***************             *  PRINT LIST *             *      OF     *             * ASSIGNMENTS *             ***************
  166. 30010  HOME : PRINT "PRINTER IS ASSUMED TO BE PARALLEL       INTERFACED. (SEE LINES 30000-30025)"
  167. 30012  PRINT : PRINT "TURN ON PRINTER & SET TOP OF FORM.": PRINT 
  168. 30015  PRINT : POKE RS,0: INPUT "WHAT SLOT # FOR PRINTER ? ";P9
  169. 30020  PRINT D$"PR#";P9
  170. 30026  FOR X1 = 1 TO 11: PRINT FI$(X1)
  171. 30027  ON X1 GOSUB 6100,6200,6300,6400,6500,6600,6700,6800,6900,7000,7100
  172. 30028  IF X1 = 5  OR X1 = 8  THEN  PRINT  CHR$(12): REM  FORM FEED
  173. 30029  NEXT 
  174. 30030  PRINT D$"PR#0"
  175. 30040  HOME : GOTO 325
  176. 60000  REM  *****************           * SETUP ROUTINE *           *****************
  177. 60100  TEXT : HOME 
  178. 60101 D$ =  CHR$(4)
  179. 60102 A$ = D$ +"APPEND"
  180. 60103 B$ = D$ +"BLOAD"
  181. 60104 BS$ = D$ +"BSAVE"
  182. 60105 C$ = D$ +"CLOSE"
  183. 60106 DE$ = D$ +"DELETE"
  184. 60108 O$ = D$ +"OPEN"
  185. 60109 P$ = D$ +"POSITION"
  186. 60110 R$ = D$ +"READ"
  187. 60111 U$ = D$ +"UNLOCK"
  188. 60112 W$ = D$ +"WRITE"
  189. 60113 L$ = D$ +"LOCK"
  190. 60199 LM = 32:SW = 33:T = 34:B = 35
  191. 60200  REM  ******************          * POKE LM,SW,T,B *          * WITH VALUE TO  *          * SET FOLLOWING  *
  192. 60201  REM  * LM-LEFT MARGIN *
  193. 60202  REM  * SW-SCREEN WIDTH*
  194. 60203  REM  * T-TOP OF SCREEN*
  195. 60204  REM  * B-BOT. SCREEN  *          ******************
  196. 60249 CE =  -958:CL =  -868
  197. 60250  REM *******************         * CALL CE TO CLEAR*         * F/CURSOR TO END *         * OF SCREEN.      *
  198. 60251  REM *                 *
  199. 60252  REM * CALL CL TO CLEAR*         * F/CURSOR TO END *         * OF LINE.        *         *******************
  200. 60270 RK =  -16384:RS =  -16368
  201. 60274  REM *******************         * PEEK RK TO READ *         * KEYBOARD.       *
  202. 60275  REM *                 *
  203. 60276  REM * POKE RS,0 TO    *         * RESET KEYBOARD  *
  204. 60277  REM *******************
  205. 60299 CH = 36:CV = 37
  206. 60300  REM *******************         * PEEK OR POKE CH *         * TO READ OR SET  *         * CUR. HORZ. POS. *
  207. 60301  REM *                 *
  208. 60302  REM * PEEK OR POKE CV *         * TO READ OR SET  *         * CUR. VERT. POS. *         *******************
  209. 60320 TD =  -16303:GD =  -16304:P1 =  -16300:P2 =  -16299:LR =  -16298:HR =  -16297:FS =  -16302:MS =  -16301
  210. 60321  REM *******************         * POKE TO SELECT  *         * THE FOLLOWING.. *
  211. 60322  REM * TD-TEXD DISPLAY *
  212. 60323  REM * GD-GRAFIC DISPL.*
  213. 60324  REM * P1-PAGE ONE     *
  214. 60325  REM * P2-PAGE TWO     *
  215. 60326  REM * LR-LOW RES      *
  216. 60327  REM * HR-HI RES       *
  217. 60328  REM * FS-FULL SCREEN  *
  218. 60329  REM * MS-MIXED SCREEN *         *******************
  219. 60350 TS =  -16336:TC =  -16352:B0 =  -16287:B1 =  -16286:B2 =  -16285
  220. 60351  REM *******************         * POKE OR PEEK TS *         * TO TOG. SPEAKER *
  221. 60352  REM *                 *         * POKE TC TO TOG. *         * CASSETTE OUTPUT *
  222. 60353  REM *                 *         * PEEK B0,B1,B2   *         * TO READ STATUS  *
  223. 60354  REM * OF PDL. BUTTONS *
  224. 60355  REM * 0,1 OR 2        *
  225. 60356  REM *******************
  226. 60380  FOR CY = 768 TO 777
  227. 60381  READ DA: POKE CY,DA: NEXT : RESTORE 
  228. 60382  REM *******************         * THIS WILL POKE  *         * ERROR HANDLE RTN*         * IN LOW PAGE 3   *         * CALL 768        *         *******************
  229. 60385  FOR CY = 945 TO 954
  230. 60386  READ DA: POKE CY,DA: NEXT : RESTORE 
  231. 60387  REM *******************         * THIS WILL POKE  *         * ERROR HDL. RTN  *         * IN HIGH PAGE 3  *         * CALL 945        *         *******************
  232. 60390  DATA  104,168,104,166,223,154,72,152,72,96
  233. 60400  DEF  FN VS(X) =  PEEK(105) + PEEK(106) *256: REM   START OF VARIABLE SPACE                      
  234. 60401  DEF  FN AS(X) =  PEEK(107) + PEEK(108) *256: REM   START OF ARRAY SPACE                            
  235. 60402  DEF  FN EV(X) =  PEEK(109) + PEEK(110) *256: REM   END OF VARIABLES IN USE                    
  236. 60403  DEF  FN SS(X) =  PEEK(111) + PEEK(112) *256: REM   START OF STRING STORAGE                        
  237. 60405  DEF  FN DL(X) =  PEEK(123) + PEEK(124) *256: REM DATA LINE BEING READ
  238. 60450  DIM FI$(11)
  239. 60451 FI$(1) = "TEXT & HOME COMMANDS."
  240. 60452 FI$(2) = "DOS COMMAND STRINGS."
  241. 60453 FI$(3) = "WINDOW PARAMETER LOCATIONS."
  242. 60454 FI$(4) = "CLEAR SCREEN CALL LOCATIONS."
  243. 60455 FI$(5) =